﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using DTO;

namespace DAO
{
    public class ThemNhanVienDAO
    {
        private static string ChuoiKetNoi = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=DB/DATA.mdb";

        protected static OleDbConnection MoKetNoi()
        {
            OleDbConnection KetNoi = new OleDbConnection(ChuoiKetNoi);
            KetNoi.Open();
            return KetNoi;
        }

        public static bool ThemNhanVien(ThemNhanVienDTO nv)
        {
            OleDbParameter ThamSo;
            OleDbConnection KetNoi = null;

            KetNoi = MoKetNoi();
            
            string CauTruyVan1 = "INSERT INTO NhanVien(MaNhanVien, HoTen, NgaySinh, DiaChi, DienThoai, BoPhan, ChucVu, BangCap) VALUES(@MaNhanVien, @HoTen, @NgaySinh, @DiaChi, @DienThoai, @BoPhan, @ChucVu, @BangCap)";
            string CauTruyVan2 = "INSERT INTO Login VALUES(@Username, @Password, @SH, @SHID)";

            OleDbCommand Lenh1 = new OleDbCommand(CauTruyVan1, KetNoi);
            OleDbCommand Lenh2 = new OleDbCommand(CauTruyVan2, KetNoi);

            ThamSo = new OleDbParameter("@MaNhanVien", OleDbType.VarChar);
            ThamSo.Value = nv.MaNhanVien;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@HoTen", OleDbType.VarChar);
            ThamSo.Value = nv.Hovaten;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@NgaySinh", OleDbType.DBDate);
            ThamSo.Value = Convert.ToDateTime(nv.Ngaysinh);
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@DiaChi", OleDbType.VarChar);
            ThamSo.Value = nv.Diachi;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@DienThoai", OleDbType.VarChar);
            ThamSo.Value = nv.Dienthoai;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@BoPhan", OleDbType.VarChar);
            ThamSo.Value = nv.Bophan;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@ChucVu", OleDbType.VarChar);
            ThamSo.Value = nv.Chucvu;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@BangCap", OleDbType.VarChar);
            ThamSo.Value = nv.Bangcap;
            Lenh1.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@Username", OleDbType.VarChar);
            ThamSo.Value = nv.Username;
            Lenh2.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@Password", OleDbType.VarChar);
            ThamSo.Value = nv.Password;
            Lenh2.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@SH", OleDbType.VarChar);
            ThamSo.Value = nv.Bophan;
            Lenh2.Parameters.Add(ThamSo);

            ThamSo = new OleDbParameter("@SHID", OleDbType.VarChar);
            ThamSo.Value = nv.MaNhanVien;
            Lenh2.Parameters.Add(ThamSo);

            if (Lenh1.ExecuteNonQuery() != 0)
                if (Lenh2.ExecuteNonQuery() != 0)
                {
                    KetNoi.Close();
                    return true;
                }
   
            return false;
        }

        public static bool KiemTra(ThemNhanVienDTO nv)
        {
            OleDbParameter ThamSo;
            OleDbConnection KetNoi = null;
            try
            {
                KetNoi = MoKetNoi();

                string CauTruyVan = null;
                OleDbCommand Lenh = null;
                OleDbDataReader data = null;

                CauTruyVan = "SELECT MaNhanVien FROM NhanVien WHERE MaNhanVien = @MaNhanVien";

                Lenh = new OleDbCommand(CauTruyVan, KetNoi);

                ThamSo = new OleDbParameter("@MaNhanVien", OleDbType.VarChar);
                ThamSo.Value = nv.MaNhanVien;
                Lenh.Parameters.Add(ThamSo);

                data = Lenh.ExecuteReader();
                if (data.Read())
                {
                    MessageBox.Show("Mã Nhân Viên đã tồn tại !\nVui lòng nhập lại ...");
                    return false;
                }

                CauTruyVan = "SELECT Username FROM Login WHERE Username = @Username";

                Lenh = new OleDbCommand(CauTruyVan, KetNoi);

                ThamSo = new OleDbParameter("@Username", OleDbType.VarChar);
                ThamSo.Value = nv.Username;
                Lenh.Parameters.Add(ThamSo);

                data = Lenh.ExecuteReader();
                if (data.Read())
                {
                    MessageBox.Show("Tên Đăng Nhập đã được đăng ký !\nVui lòng nhập lại ...");
                    return false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Kết nối thất bại !");
                return false;
            }
            finally
            {
                if (KetNoi != null && KetNoi.State == System.Data.ConnectionState.Open)
                    KetNoi.Close();
            }
            return true;
        }
    }
}
